Django

时间:2016-11-13 02:28:19

标签: python django foreign-keys sequence

我有一个具有分层课程,笔记和任务模型的应用程序。也就是说,每个Course都有一堆由ForeignKey指向它的Note实例,每个Note都有一堆指向它的Task实例。

我希望所有内容都按特定顺序排列,因此我通过父模型向Course和Note添加了sequence属性。这允许他们保存链接实例的pk的有序列表(例如[1,4,6,2,3]),然后我可以编辑它的顺序。

我还为Course添加了global_sequence,其中包含('class_name',pk)元组的列表作为字符串E.g. [“('注意',1)”,“('任务',19)”,“('任务',31)”,“('注意',2)”,“('任务',22)” ,]。

class Sequence(models.Model):
    sequence = django.contrib.postgres.fields.ArrayField(models.IntegerField())


class Course(Sequence):
    title = models.CharField(max_len=80)
    global_sequence = django.contrib.postgres.fields.ArrayField(
        models.CharField(max_len=30)
        )


class Note(Sequence):
    body = models.TextField()
    course = models.ForeignKey(Course, related_name='content')


class Task(models.Model):
    q = models.CharField(max_len=100)
    a = models.CharField(max_len=100)
    note = models.ForeignKey(Note, related_name='content')

我觉得构建sequenceglobal_sequence的方法可能很幼稚,因为无论何时创建或删除链接实例(我都使用信号),都必须手动更新序列。此外,global_sequence中的字符串可能容易出错,我必须使用eval()来取回它们,但ArrayList不能存储元组。我考虑过使用ContentType模型,但我不知道如何在有序列表中使用它。

我的问题是:是否存在更少出错或更安全(即非eval())的方式来保持特定顺序的相同或混合模型的链接实例?

我发现最接近的是this,它只是说整数的有序列表并不可怕如果它没有经常更新,但我的序列可能会相当频繁地更新

0 个答案:

没有答案