【发布时间】:2021-01-05 07:53:59
【问题描述】:
我在 OneToOne 关系中有两个名为 RecId 和 Record 的模型,
models.py
class RecId(models.Model):
rec_id = models.CharField(max_length=255)
def __str__(self):
return str(self.rec_id)
class Record(models.Model):
rec_id = models.OneToOneField(RecId, on_delete=models.CASCADE, null=True, blank=True)
desc = models.TextField()
user = models.ForeignKey(UserAccount, on_delete=models.CASCADE)
def __str__(self):
return str(self.rec_id)
我的问题是,
默认情况下,django admin 记录编辑表单编辑字段(RecId 字段)显示RecId 表中的所有rec_ids。但是我只需要显示可以分配给一个Record的记录(因为两个表之间的关系是OneToOne,一个id只能分配给一个记录)
我试图通过使用formfield_for_foreignkey() 方法来做到这一点,但目前卡住了查询
admin.py
@admin.register(Record)
class RecordAdmin(admin.ModelAdmin):
list_display = ['rec_id', 'desc', 'user']
search_fields = ['rec_id', 'user']
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "rec_id":
kwargs["queryset"] = RecId.objects.all().exclude(... The query ...)
return super(RecordAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
我在一两个小时前尝试使用~Exists(Record.objects.filter(rec_id__eq=OuterRef('pk'))) 进行查询,但没有成功。非常感谢任何帮助。
【问题讨论】:
标签: django django-models django-admin