[英]Django - Restricting ModelChoiceField to valid values
class Comment(models.Model):
user = models.ForeignKey(User)
document = models.ForeignKey(Document)
section = models.ForeignKey(Section, null=True, blank=True)
description = models.TextField(null=True, blank=True)
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ('section', 'description')
每個評論都屬於文檔的一個部分。 每個文檔有許多部分。 但是,由 Django 打印的 ModelChoiceField 將包含所有文檔的部分。
如何告訴 Django 只打印屬於特定文檔的部分?
我查看了ModelFormSets - 更改查詢集,但我認為這不是我所追求的。
如果您需要做的只是調整管理站點,您可以覆蓋 django 管理員 class 上的formfield_for_foreignkey方法。
從文檔:
ModelAdmin.formfield_for_foreignkey(self,db_field, request, **kwargs)
ModelAdmin 上的 formfield_for_foreignkey 方法允許您覆蓋外鍵字段的默認表單字段。 例如,要根據用戶返回此外鍵字段的對象子集:
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "car":
kwargs["queryset"] = Car.objects.filter(owner=request.user)
return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
這使用 HttpRequest 實例過濾 Car 外鍵字段以僅顯示 User 實例擁有的汽車。
我認為您想更改ModelChoiceField 的查詢集,而不是表單集的查詢集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.