Django: создание поля со значением первичного ключа (сгенерированного django) той же модели - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь создать целочисленное поле (topic_id), равное сгенерированному Django значению первичного ключа (id).

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    topic_id = ?????

Спасибо за ваше время.

Ответы [ 3 ]

0 голосов
/ 09 сентября 2018

Сделайте ваш topic_id интергерфилдом

В def save ():

self.topic_id = self.id
0 голосов
/ 09 сентября 2018

Вы можете сделать topic_id псевдонимом id с решением здесь :

class AliasField(models.Field):
    def contribute_to_class(self, cls, name, private_only=False):
        super(AliasField, self).contribute_to_class(cls, name, private_only=True)
        setattr(cls, name, self)

    def __get__(self, instance, instance_type=None):
        return getattr(instance, self.db_column)

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    topic_id = AliasField(db_column='id')
0 голосов
/ 09 сентября 2018

Объявите его как метод и используйте @property decorator, чтобы вернуть его как фактическое свойство.

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    @property
    def topic_id(self):
        return self.id
...