ValueError..."Contestant.contest" 必须是 "Contest" 实例
ValueError... "Contestant.contest" must be a "Contest" instance
我正在尝试通过模型表单创建参赛者,每个参赛者都是竞赛模型的外键,每当我尝试提交表单以创建新参赛者时,我都会收到一个值错误:
Cannot assign "27": "Contestant.contest" must be a "Contest" instance. ```
I have two models, Contest and Contestant in my `models.py`
```class Contest(models.Model):
contest_title = models.CharField(max_length=30)
contest_post = models.CharField(max_length=100)
class Contestant(models.Model):
contest = models.ForeignKey(Contest, on_delete=models.CASCADE, related_name='participating_contest')
contestant_name = models.CharField(max_length=10, blank=True, null=True)
contestant_intro = models.CharField(max_length=30, blank=True, null=True)
contestant_post = models.CharField(max_length=100, blank=True, null=True)
在我的 urls.py 中,我试图将竞赛主键 (PK) 传递给表单
urls.py
path('contestant/<int:pk>/new/', views.ContestantCreateView.as_view(), name='new-contestant'),
我在 views.py 中使用 django 的 createview 并尝试将 pk 传递给表单的 form_valid 函数。
views.py
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
form.instance.contest = self.kwargs.get('pk')
return super().form_valid(form)
我尝试将 views.py 更改为
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
contesting_contest = Contest.objects.get(participating_contest=pk)
contesting_contest.contest = form.instance.contest
return super().form_valid(form)
但是我得到了
NameError at /contests/contestant/27/new/ name 'pk' is not defined
您应该将其分配给 contest_id
,而不是 contest
,因为该字段需要一个 Contest
对象:
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
form<strong>.instance.contest_id = self.kwargs['pk']</strong>
return super().form_valid(form)
我正在尝试通过模型表单创建参赛者,每个参赛者都是竞赛模型的外键,每当我尝试提交表单以创建新参赛者时,我都会收到一个值错误:
Cannot assign "27": "Contestant.contest" must be a "Contest" instance. ```
I have two models, Contest and Contestant in my `models.py`
```class Contest(models.Model):
contest_title = models.CharField(max_length=30)
contest_post = models.CharField(max_length=100)
class Contestant(models.Model):
contest = models.ForeignKey(Contest, on_delete=models.CASCADE, related_name='participating_contest')
contestant_name = models.CharField(max_length=10, blank=True, null=True)
contestant_intro = models.CharField(max_length=30, blank=True, null=True)
contestant_post = models.CharField(max_length=100, blank=True, null=True)
在我的 urls.py 中,我试图将竞赛主键 (PK) 传递给表单 urls.py
path('contestant/<int:pk>/new/', views.ContestantCreateView.as_view(), name='new-contestant'),
我在 views.py 中使用 django 的 createview 并尝试将 pk 传递给表单的 form_valid 函数。 views.py
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
form.instance.contest = self.kwargs.get('pk')
return super().form_valid(form)
我尝试将 views.py 更改为
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
contesting_contest = Contest.objects.get(participating_contest=pk)
contesting_contest.contest = form.instance.contest
return super().form_valid(form)
但是我得到了
NameError at /contests/contestant/27/new/ name 'pk' is not defined
您应该将其分配给 contest_id
,而不是 ,因为该字段需要一个 contest
Contest
对象:
class ContestantCreateView(CreateView):
model = Contestant
fields = ['contestant_name', 'contestant_intro', 'contestant_post']
def form_valid(self, form):
form<strong>.instance.contest_id = self.kwargs['pk']</strong>
return super().form_valid(form)