Django专栏

Django系列专栏

在django admin开发的时候,在添加数据的时候,发现了下图的问题。项目id是BimFaceModel的外键,所以在添加数据的时候显示出来是如下的样子,如何把它改成项目名呢?

只要在外键对应的类中添加 __str__() 函数就好了!在我这里对应的是 Project 类:

class Project(models.Model):
    class Meta:
        verbose_name = '项目管理'
        verbose_name_plural = verbose_name
	# 添加该函数
    def __str__(self):
        return self.project_name
	users = models.ManyToManyField(SysUser, null=True, blank=True)
    project_id = models.AutoField("项目id", primary_key=True)
    project_name = models.CharField("项目名", max_length=255)
    project_description = models.TextField("项目描述", null=True, blank=True)

结果如下,over over!

在django admin开发的时候,在添加数据的时候,发现了下图的问题。项目id是BimFaceModel的外键,所以在添加数据的时候显示出来是如下的样子,如何把它改成项目名呢? class BlogArticleAdmin(admin.ModelAdmin):     def formfield_for_foreignkey(self, db_field, request, **kwargs):         if db_field.name == "sort_id":             kwargs["queryset"] = T django 1.8.4 错误内容:related Field has invalid lookup: icontains 我原来默认认为在处理搜索的时候,django会自动将该的行数据以str()化之后进行搜索,但其实并不是这样的,如果将加入到搜索域中,需要明确写出来。 这个是我从网上查到的解决方案,测试可用,如下: models.py
开发的过程中,在admin管理站点遇到一个全部由组成的表,这个表关联的多个表的数据量都比较庞大,在点击添加的时候,django会默认把这些表的数据全部给加载出来后才会响应,导致响应时间过长。 在尝试了多种方法后,终于发现了一个方法可以很有效的解决这个问题。 raw_id_fields = ['tablename'] 这个可以让关联的表的数据 暂时不加载 等你需要的时候才加载...
首先,我这个想增加这个模型数据时有一个下选项是Customer表中的字段,然后想通过选择该选项保存后,把这个选项的值添加到本表中的customer_name字段。 第一个红框处是关联表名,第二个红框处是关联字段名,第三个是级联删除动作,必须要有,不然报错。 2.因为要做关联,所以models中,Customer这张表就必须要加unique=True唯一参数,不然一样会报错。还有就是因为要返回是个字段的值,而不是一个数据集,所以在python3中我们要添加一个 这样才能使下选项是字段的值,
Django中,当你在一个模型中添加一个(ForeignKey)字段时,Django会自动创建一个关联的模型对象,并保存到数据库中。如果这个字段是指向Django的User模型(即用户模型),那么Django会自动为你创建一个用户对象,并将其与字段关联起来。 举个例子,假设你有一个博客应用,其中有一个Post模型和一个User模型,你想让每篇博客都有一个作者,可以在Post模型中添加一个字段,指向Django的User模型: ```python from django.db import models from django.contrib.auth.models import User class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) 在这个模型中,我们定义了一个ForeignKey字段,指向Django的User模型,并设置了on_delete为CASCADE,表示当User对象被删除时,所有与之相关的Post对象也会被删除。 当你在视图中创建一个新的Post对象时,只需要将author字段设置为当前登录用户即可: ```python from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required from .models import Post @login_required def create_post(request): if request.method == 'POST': title = request.POST.get('title') content = request.POST.get('content') post = Post(title=title, content=content, author=request.user) post.save() return redirect('post_detail', pk=post.pk) else: return render(request, 'create_post.html') 在这个视图中,我们从POST请求中获取title和content字段,然后创建一个新的Post对象,并将author字段设置为当前登录用户,最后保存到数据库中。 这样,当你创建一个新的Post对象时,Django会自动创建一个与之关联的User对象,并将其保存到数据库中。