Python 表单始终无效/无法分配实例
我为我的问题挣扎了一段时间。它继续我先前的问题: 我发现问题是这样的:Python 表单始终无效/无法分配实例,python,django,django-forms,django-views,Python,Django,Django Forms,Django Views,我为我的问题挣扎了一段时间。它继续我先前的问题: 我发现问题是这样的: class TranslatorChoice(forms.ModelForm): def __init__(self, *args, **kwargs): self.user_id = kwargs.pop('user_id',None) super(TranslatorChoice, self).__init__(*args, **kwargs) self.field
class TranslatorChoice(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.user_id = kwargs.pop('user_id',None)
super(TranslatorChoice, self).__init__(*args, **kwargs)
self.fields['owner'].queryset = Translator.objects.all().filter(owner = self.user_id)
owner = forms.ModelChoiceField(queryset = None)
class Meta:
model = Translator
fields = ('owner', )
其“模式:
class Translator(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
owner = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='created_translators'
)
def __str__(self):
return str(self.user)
以及以下观点:
def link_translator(request):
if request.method == 'POST':
form = TranslatorChoice(request.POST)
if form.is_valid():
pass
return redirect('dashboard')
else:
form = TranslatorChoice(user_id=request.user)
通过上面的代码,表单给了我选择的选项,但每当我点击submit,表单就会要求我选择一个有效的选项。但是,如果我将Translator.objects.all().filter(owner=self.user\u id)
更改为Translator.objects.all()
form.is\u valid()
为true,但会出现另一个错误:
ValueError at /linkt/
Cannot assign "<Translator: rawkymonk>": "Translator.owner" must be a "User" instance.
ValueError位于/linkt/
无法分配“”:“Translator.owner”必须是“用户”实例。
我猜主要的问题是
modelcoocefield
,因此如果有替代方案,请告诉我。owner
是User
的外键,因此我认为queryset应该使用该模型。试一试
self.fields['owner'].queryset = User.objects.filter(id=self.user_id)
我没有测试上面的代码。我测试了这个。这是一样的,每当我提交表格,它说无效的选择。