Django Sites Framework __str__ представление
Я экспериментирую с фреймворком Django Site. В форме UpdateView модель сайта _str_ представляет self.domain
, но я хочу использовать self.name
. Например, вместо 'www.test.com' я хочу, чтобы появилось 'Test, Inc.'.
Наверное, я мог бы изменить сам код модели Django Site (показан ниже), но я не очень хочу этого делать. Я бы предпочел перезаписать настройки в моем приложении или в представлении формы, но я не могу понять, как сделать ни то, ни другое.
class Site(models.Model):
domain = models.CharField(
_('domain name'),
max_length=100,
validators=[_simple_domain_name_validator],
unique=True,
)
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 natural_key(self):
return (self.domain,)
Когда я подклассифицирую модель Site, мой CustomSite пытается выполнить соединение с моделью Site и вызывает осложнения, поэтому кажется, что такой подход не идеален.
class CustomSite(Site):
objects = SiteManager()
def __str__(self):
return self.name
class Meta:
db_table = 'django_customsite'
Ниже приведена упрощенная версия формы, которую я тестировал. Форма работает. Она обновляет объект с нужным сайтом, но я все еще хотел бы знать, как использовать name
в качестве представления вместо domain
.
class StoreUpdateView(UpdateView):
model = Site
fields = [
'store',
'site_id',
]
template_name = 'app/group-updateview.html'
Я в принципе сделал промежуточную таблицу (Site > Store > Products), но я хотел бы знать, как изменить настройку _str_ модели Site. Как я могу переписать параметр _str_ модели Site, чтобы вернуть поле Site name
вместо поля domain
?