我在覆盖“站点”中包含的“站点”模型时出现问题。我的网站上有一个带有“站点”的表单,我需要显示站点的名称,而不是Site.domain,我是覆盖模型,将它路由到“Meta”类中的同一个DB表并得到错误,我不能理解,代码在这里:
型号:
@python_2_unicode_compatible
class Site(models.Model):
domain = models.CharField(_('domain name'), max_length=100)
name = models.CharField(_('display name'), max_length=50)
objects = SiteManager()
class Meta:
db_table = 'django_site'
verbose_name = _('site')
verbose_name_plural = _('sites')
ordering = ('domain',)
def __str__(self):
return self.domain
def save(self, *args, **kwargs):
super(Site, self).save(*args, **kwargs)
# Cached information will likely be incorrect now.
if self.id in SITE_CACHE:
del SITE_CACHE[self.id]
def delete(self):
pk = self.pk
super(Site, self).delete()
try:
del SITE_CACHE[pk]
except KeyError:
pass
我的首要模式:
from django.contrib.sites.models import Site
from django.utils.translation import ugettext_lazy as _
class NamedSite(Site):
def __str__(self):
return self.name
class Meta:
db_table = 'django_site'
verbose_name = _('site')
verbose_name_plural = _('sites')
ordering = ('domain',)
和错误
DatabaseError at <my url>
ERROR: Column django_site.site_ptr_id doesn't exist
LINE 1: ...ROM "django_site" INNER JOIN "django_site" T2 ON ("django_si...
答案 0 :(得分:1)
对模型进行子类化是model inheritance的一个示例。无法“覆盖模型并路由到同一个db表”。
更好的方法是子类ModelChoiceField
,并覆盖label_from_instance
以根据需要显示网站实例。然后使用您的模型选择字段选择表单中的网站。