来自相关模型的Django M2M CreateView和UpdateView

来自相关模型的Django M2M CreateView和UpdateView,django,python-2.7,django-forms,many-to-many,Django,Python 2.7,Django Forms,Many To Many,我有这些模型: class Company(models.Model): name = models.CharField(max_length=50, null=False, blank=False, verbose_name=ugettext_lazy(u'Name')) building = models.ForeignKey(Building, null=False, blank=False, verbose_name=ugettext_lazy(u'Building'))

我有这些模型:

class Company(models.Model):
    name = models.CharField(max_length=50, null=False, blank=False, verbose_name=ugettext_lazy(u'Name'))
    building = models.ForeignKey(Building, null=False, blank=False, verbose_name=ugettext_lazy(u'Building'))
    parking_spaces_count = models.PositiveIntegerField(verbose_name=ugettext_lazy(u'Parking spaces count'))

    def __unicode__(self):
        return unicode(self.name)


class Car(models.Model):
    registration_number = models.CharField(max_length=10, blank=False, null=False, verbose_name=ugettext_lazy(u'Registration number'))

    def __unicode__(self):
        return unicode(self.registration_number)


class Employee(models.Model):
    first_name = models.CharField(max_length=50, null=False, blank=False, verbose_name=(ugettext_lazy(u'First name')))
    last_name = models.CharField(max_length=50, null=False, blank=False, verbose_name=(ugettext_lazy(u'Last name')))
    id_number = models.CharField(max_length=20, null=False, blank=False, verbose_name=(ugettext_lazy(u'Identification card number')))
    company = models.ForeignKey(Company, null=False, blank=False, verbose_name=ugettext_lazy(u'Company'), related_name='employees')
    cars = models.ManyToManyField(Car, verbose_name=ugettext_lazy(u'Cars'), related_name='owners')

    def __unicode__(self):
        return unicode(' '.join([self.first_name, self.last_name]))
我希望能够实施:

1-CarCreateView-在这里,我将通过提供注册号和所有者(这是员工模型中的相关字段)字段在数据库中创建汽车对象。当我尝试在这样的字段中输入“所有者”(使用Django的CreateView)时:

我收到一个错误“为汽车指定的未知字段(所有者)”

我设法用FormView模拟了它,它可以工作:

class CarCreateView(FormView):
    model = Car
    template_name = 'companies/cars/add.html'
    form_class = CarCreateForm
    success_url = reverse_lazy('companies:cars:list')

    def form_valid(self, form):
        employees = form.cleaned_data['owners']
        registration_number = form.cleaned_data['registration_number']
        car = Car(registration_number=registration_number)
        car.save()
        car.owners = employees
        return super(CarCreateView, self).form_valid(form)
我的问题是-这是干的还是更好

2-CarEditView-在这里,我可以通过提供汽车的注册号和车主来编辑现有的汽车对象。到目前为止,我已经尝试使用FormView,但我没有取得任何成果,所以请您指导我怎么做?如果我能使用UpdateView就最好了,但我想M2M关系并不是那么简单

丹尼尔

class CarCreateView(FormView):
    model = Car
    template_name = 'companies/cars/add.html'
    form_class = CarCreateForm
    success_url = reverse_lazy('companies:cars:list')

    def form_valid(self, form):
        employees = form.cleaned_data['owners']
        registration_number = form.cleaned_data['registration_number']
        car = Car(registration_number=registration_number)
        car.save()
        car.owners = employees
        return super(CarCreateView, self).form_valid(form)