首页 > 解决方案 > 如何选择另一个表的特定字段作为表的外键?Sqlite3,Django==2.1

问题描述

我有以下型号:

class Student(AbstractUser):
    email = models.EmailField(unique=True)
    roll = models.CharField(max_length=200, blank=False,
                            unique=True, primary_key=True)
    contact_no = models.DecimalField(
        max_digits=10, decimal_places=0, blank=False, unique=True)
    objects = UserManager()


class Event(models.Model):
    type_of_event = models.ForeignKey(EventType, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    description = models.TextField()
    event_date = models.DateField()
    venue = models.CharField(max_length=200)
    entry_fee = models.FloatField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('dashboard')


class EventParticipants(models.Model):
    event_name = models.ForeignKey(Event, on_delete=models.CASCADE)
    participant_roll = models.ForeignKey(
        Student, on_delete=models.CASCADE, default="123")

如何roll将模型中的字段Student作为表中的外键EventParticipants。默认情况下username,模型中的字段Student被选为外键。

标签: djangodjango-models

解决方案


此处的Django 文档说您可以将 ForeignKey 声明中的to_field值设置为目标模型中的任何唯一字段。

participant_roll = models.ForeignKey(
        Student, on_delete=models.CASCADE, to_field='roll')

推荐阅读