Django:将选项添加到ForeignKey字段

时间:2018-08-08 07:17:30

标签: python django django-models django-forms

我正在尝试向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(仅用于测试目的)”是我要向用户隐藏的实际组名。

希望您能理解我正在努力实现的目标。我是在正确的轨道上吗,还是有其他方法可以做到这一点?

预先感谢您的回答

0 个答案:

没有答案