У меня есть три разных модели (Job, Tender, News).Дизайн и требования типа контента Django
class Tender(models.Model):
title = models.CharField(max_length=256)
description = models.TextField()
department = models.CharField(max_length=50)
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
class Job(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=256)
qualification = models.CharField(max_length=256)
employer = models.CharField(max_length=50)
salary = models.IntegerField()
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
class News(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=150)
body = models.TextField()
tags = models.ManyToManyField(Tag)
pub_date = models.DateTimeField(default=timezone.now)
Теперь я хотел бы сделать другую модель (класс Post), так что всякий раз, когда создается новый объект (работы или тендера или новостей), новый пост объект должен быть создан, в основном это будет сделано с помощью сигналы.
Теперь этот пост класса
- Я хотел бы, чтобы отфильтровать с помощью пользователя, который создал работу/тендер/объект новости.
- Также фильтруйте, используя теги, которые использовались в объекте job/tender/news.
- Заказ by pub_date.
Я очень новичок в содержании контента django и смущен, какие поля будут необходимы. Я точно знаю, что это три поля обязательны, content type
, object id
и content object
.
class Post(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
Но чтобы получить функциональные возможности, которые я хочу (то есть фильтр и порядок по), я должен добавить user
, tags
и pub_date
поле в Post
классе?
Прошу прощения, я не получил ссылку на модели через ForeignKey. Не могли бы вы рассказать об этом. Спасибо. – Aamu
Извините, это не умно. Я считаю, что у вас также есть модель под названием Tag из-за 'tags = models.ManyToManyField (Tag)', поэтому я просто предлагаю для пользователя и тегов, которые вы включили в Post 'user = models .ForeignKey (settings.AUTH_USER_MODEL) 'и' tags = models.ManyToManyField (Tag) '. Из интереса, почему вы не используете 'user = models.ForeignKey (User)'? – HenryM