2013-12-16 28 views
0

如果我有像這樣的模型:基於SiteMeta保存表單字段分成不同的模型

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) 

什麼是保存的名字最有效的方式,在病房一個的ModelForm?

回答

0

您可以通過sitemeta作爲模型位置的外鍵

class Location(models.Model): 
    name = models.CharField(max_length=100) 
    ward = models.CharField(max_length=100) 
    sitemeta = models.ForeignKey(SiteMeta) 
0

我假設你已經添加name並在SiteMeta模型形式ward場。

在這種情況下,您可以爲Location定義模型表單,並使用它來創建位置對象或從SiteMeta中的字段創建Location對象。 然後保存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() 
相關問題