2017-06-30 12 views
2

私のモデルはAutoField(整数)でデフォルトのpkを持っていますが、後で私はBigAutoFieldを代わりに使う必要があることを発見しました! そしてまた、私は学生のモデルを参照する他のモデルと、その後にデータを持っている::どのように私はBigAutoFieldにPKフィールドを変更しないと、他の参照モデルにAutoFieldを使ってdjangoのデフォルトpkをBigAutoFieldに変更する

class Student(models.Model): 
    matric_no = models.CharField(max_length=20, unique=True) # first set it to U(random) 
    password = models.CharField(max_length=128) 
    session = models.ForeignKey(Session, null=True) 
    programme = models.ForeignKey(Programme, null=True) 
    school = models.ForeignKey(School, null=True) 
    course_comb = models.ForeignKey(CourseComb, null=True) 
    serial = models.IntegerField(null=True) 
    current_level = models.CharField(max_length=3, choices=LEVEL_CHOICES, default='100', null=True) 
    last_login = models.DateField(null=True) 
    is_active = models.CharField(max_length=1, default=1, choices=((1, 1), (0, 0))) 
    created_at = models.DateTimeField(default=timezone.now) 
    updated_at = models.DateTimeField(auto_now=True) 

学生

class Profile(models.Model): 

    student = models.OneToOneField(Student, on_delete=models.CASCADE) 
    attachment = models.ImageField(null=True, blank=True, verbose_name="Profile Image") 
    surname = models.CharField(max_length=255, null=True, verbose_name="Surname") 
    othernames = models.CharField(max_length=255, null=True, verbose_name="Othernames") 
    SEX_CHOICES = (
     ("M", "Male"), 
     ("F", "Female") 
    ) 

答えて

2
を参照するモデルを反映していますフィールド定義で

設定primary_key=True

id = models.BigAutoField(primary_key=True) 

あなたが複数のモデルでこれを使用する場合は、またABSTRを作ることができます行動モデルと他の人がそれを継承してみましょう:

class BigPkAbastract(models.Model): 
    id = models.BigAutoField(primary_key=True) 

    class Meta: 
     abstract = True 

そして、あなたの他のモデルで:あなたの応答のための

class SomeModel(BigPkAbastract): 
    <your model here> 
+0

感謝! 私はこの 'クラスプロファイル(models.Model)のような参照モデルを持っている:' OneToOneField'はいけない、大丈夫です 学生= models.OneToOneField(学生、on_delete = models.CASCADE) ' –

+0

@FestusFasholaそれに問題があります。 –

+0

申し訳ありません。今すぐテストします ありがとうございました –

関連する問題