我有两个关于Django Admin的问题。
首先,我有一个Django模型Classified
,它有一个来自另一个表Address
的外键字段。在设置数据时,我没有任何字段的问题,所有字段都得到正确保存。
但是,如果我想在Classified
中的条目中编辑外来字段,则它不会在字段中显示旧/现有数据。相反,它会在打开的弹出窗口中显示空字段。
如何在单击+
时显示现有数据的字段,以便我可以编辑正确的信息?
其次,我确定我在Django Admin中看过搜索字段。我错了吗?我有办法在管理面板中实现搜索吗?我有超过200万条记录需要不时更新删除。手动浏览管理员中的所有页面并删除或编辑这些页面非常麻烦。
添加型号代码:
Classified
class Classified(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
contact_person = models.CharField(max_length=300, blank=True)
email = models.CharField(max_length=100, blank=True)
address = models.ForeignKey(Address)
subcategory = models.ForeignKey(Subcategory)
Address
class Address(models.Model):
id = models.AutoField(primary_key=True)
build_add = models.CharField(max_length=255)
street_add = models.CharField(max_length=255)
area = models.CharField(max_length=255)
city = models.ForeignKey(Cities)
答案 0 :(得分:1)
+
就是这样 - 添加相关对象的新实例,并将您正在编辑的对象与之关联起来。因为您要添加一个新对象,所以它将是空白的。如果您希望能够编辑其他对象管理员的现有相关对象,则需要使用inlines。
在你的应用中admin.py
有类似的内容:
from django.contrib import admin
from yourapp.models import Address, Classified
class AddressInline(admin.TabularInline):
model = Address
class ClassifiedAdmin(admin.ModelAdmin):
inlines = [AddressInline,]
admin.site.register(Classified, ClassifiedAdmin)
从那里添加搜索非常简单。
...
class ClassifiedAdmin(admin.ModelAdmin):
inlines = [AddressInline,]
search_fields = [
'field_you_want_to_search',
'another_field',
'address__field_on_relation',
]
...
请注意最后一个中的双下划线。这意味着您可以根据相关对象字段中的值进行搜索。
编辑:This answer是正确的,因为你的外键关系是错误的方式这样做 - 你的问题Classified
中显示的模型将是内联和Address
主要模式。