0

我的应用程序中有一个愚蠢的Job模型:

class Job(models.Model):
    # working info
    user = models.ForeignKey(User)
    company = models.CharField(max_length=100, blank=True)
    department = models.CharField(max_length=100, blank=True)
    inaugural_date = models.DateField('inaugural date', blank=True)
    resignation_date = models.DateField('resignation date', blank=True)

上面的模型正是我在我的应用程序中使用的模型,这个模型用于让用户获得他们的大学,仅此而已。

它有效,但我认为必须有更好的方法来设计这个模型,因为假设我想在同一时间获得同一公司和同一部门的所有用户,这并不容易。

请帮我重建这个模型,任何建议将不胜感激!

4

3 回答 3

0

这应该有效:

User.objects.filter(
    job_set__company__iexact="wwwww", 
    job_set__department__iexact="xxxxx",
    job_set__inaugural_date__gt=yyyy, 
    job_set__resignation_date__lt=zzzz
)

对我来说,这似乎并不复杂,如果你用 SQL 术语思考,这样的查询并不容易,至少对我来说:)

于 2013-05-17T01:23:55.867 回答
0

取决于您对增长的预测以及您使用的后端。对于关系数据库(mysql/postgres 等),我将为部门和公司创建一个单独的模型,并为它们创建连接表,以使我以后的工作更轻松。

于 2013-05-17T01:47:11.250 回答
0

你的模型看起来不错。

尽管 Django 模型不是Anemic,但我通常将其视为没有太多逻辑的纯数据结构。所以我认为

获取同一时间同一公司同一部门的所有用户

是一个不应该成为您的模型关注的逻辑,这也意味着它不应该过多地影响您的模型设计恕我直言。

模型应该保持简单和精简,以便它可以被采用和适应不同类型的逻辑。如果你试图让你的模型结构适合特定的逻辑,你会很容易发现自己被膨胀的模型所纠缠。

顺便说一句,对于复杂的查询,您可以回退到原始 SQL

于 2013-05-17T01:48:34.830 回答