将表单域保存到不同的模型中

时间:2013-12-16 10:36:46

标签: django django-models django-forms django-views

如果我有这样的模型:

models.py

class SiteMeta(models.Model):
    location_type = models.CharField(max_length=100)
    location = models.OneToOneField(Location, related_name="site")


somewhereelse/models.py

class Location(models.Model):
    name = models.CharField(max_length=100)
    ward = models.CharField(max_length=100)

基于SiteMeta在一个ModelForm中保存名称,病房的最有效方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以将sitemeta作为模型位置

中的外键传递
class Location(models.Model):
    name = models.CharField(max_length=100)
    ward = models.CharField(max_length=100)
    sitemeta = models.ForeignKey(SiteMeta)

答案 1 :(得分:0)

我假设您已在name的模型中添加了wardSiteMeta字段。

在这种情况下,您可以为Location定义模型表单,并使用它来创建位置对象或从Location中的字段创建SiteMeta对象。 然后保存SiteMeta对象以及设置位置。

例如。

locationform = LocationForm(request.POST)
if location.is_valid():
    location = locationform.save()

OR

#validate fields appropriately
location = Location.objects.create(name=request.POST.get('name'),
                                   ward=request.POST.get('ward'), 

sitemetaform = SiteMetaForm(request.POST)
if sitemetaform.is_valid():
    sitemeta = sitemetaform.save(commit=False)
    sitemeta.location = location
    sitemeta.save()