Django:以模型形式设置外键

时间:2016-10-28 18:42:04

标签: python django django-forms

我有一个活动和参加者的模型

class Event(models.Model):
    name = models.CharField(...)

class Attendee(models.Model):
    event = models.ForeignKey(Event)
    first_name = models.CharField(...)
    last_name = models.CharField(...)

我想为人们创建一个注册为与会者的视图,但我想在视图中定义他们注册的事件。与会者不应该选择该活动。他们只能输入他们的名字。

我创建了一个模型表单:

class AttendeeForm(forms.ModelForm):

    class Meta:
        model = Attendee
        fields = ['first_name', 'last_name']

我创建了一个视图:

class Signup(FormView):
    form_class = AttendeeForm
    template_name = 'event/signup.html'
    success_url = reverse('event_signup_success')

    def event(self):
        """
        For example, let's say I have the event here.
        What do I do with it?
        """
        return Event.objects.get(pk=1)

尝试提交此表单目前会导致错误,因为参加者没有定义事件。我不确定如何在视图中设置事件。我不想将事件作为隐藏字段添加到表单中,然后使用get_initial在视图中设置它,因为用户可以通过修改POST数据来更改它。以用户无法更改事件(或查看其他事件)的方式设置事件的最佳方法是什么?

0 个答案:

没有答案