我正在尝试向choices
字段添加ForeignKey
选项。但这阻止了输入表单的验证。
我不确定是否可以在choices
字段中使用ForeignKey
,但是您还会如何为选择提供可读的输出?
我不希望用户能够从所有组中进行选择,也不想显示实际的组名,因为它包含管理员的其他信息,对于化妆品来说,这些信息对用户来说是不可见的原因。
任何想法如何实现将不胜感激。
这是我的代码:
模型:
from django.contrib.auth.models import Group as DjangoGroup
class Category(models.Model):
created_by = models.ForeignKey('auth.User', on_delete=models.PROTECT, related_name='category_author')
last_edited_by = models.ForeignKey('auth.User', on_delete=models.PROTECT, related_name='category_editor')
name = models.CharField(max_length = 100)
privileges = models.ForeignKey('auth.Group', on_delete=models.PROTECT, blank=True, null=True, choices=((DjangoGroup.objects.get(pk=5), 'Test group'),))
表格:
from django import forms
from .models import *
class CategoryForm(forms.ModelForm):
class Meta:
model = Category
exclude = ('created_by', 'last_edited_by',)
使用此代码,表单提供所需的选项“测试组”,但是当我尝试提交它时,出现以下错误:
Select a valid choice. TestGroup(just for testing purposes) is not one of the available choices.
“ TestGroup(仅用于测试目的)”是我要向用户隐藏的实际组名。
希望您能理解我正在努力实现的目标。我是在正确的轨道上吗,还是有其他方法可以做到这一点?
预先感谢您的回答