Используйте content_object для добавления объекта вместо object_id, в общих отношениях

У меня есть модель (профиль), которая имеет общую связь с другой моделью (член) в другом приложении. Когда я хочу добавить новый объект профиля, я должен использовать object_id, который является полем, которое показывает ID того объекта члена, который имеет связь с этим объектом профиля. Я хочу использовать другое поле вместо этого, например, у меня есть поле content_object, которое показывает именно сам объект. Есть ли способ использовать это поле (content_object) вместо object_id feild.

profiling.models.Profile:

class Profile(models.Model):
    #objects = ProfileManager()
    MAN = 'M'
    WOMAN = 'W'
    OTHER = 'O'
    GENDER_TYPE = [
        (MAN, 'Man'),
        (WOMAN, 'Woman'),
        (OTHER,'Other'),
    ]
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    email = models.EmailField(unique=True)
    phone = models.CharField(max_length=30)
    birthdate = models.DateField()
    gender = models.CharField(max_length=1,choices=GENDER_TYPE)
    address = models.TextField()
    profile_image = models.ImageField(null=True, blank=True)
    #to define generic relation
    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField(unique=True)
    content_object= GenericForeignKey()
    
    def __str__(self) :
        return f'{self.first_name} {self.last_name}' 

ticketing.models.Member:

class Member(models.Model):
    username = models.CharField(max_length=100, unique=True)

    def __str__(self) -> str:
        return self.username
    
    class Meta:
        ordering = ['username']

enter image description here

Вернуться на верх