Это может быть сложный вопрос, если вы не получили правильно. Здесь у меня есть три модели, в которых модель отдела должна быть создана, взяв ее название из модели Place, которая связана с моделью персонала. Модель персонала находится в отношениях OneToOneField с пользователем, поэтому, когда пользователь создает отдел, название места должно передаваться как HiddenField в HTML. Это название места связано с моделью места с пользователем с GenericForeignKey. я создал сериализатор, который не работает должным образом, он возвращает название места.
В скором времени я хочу создать отдел , тогда как место должно быть выбрано из текущий идентификатор пользователя
class Staff(BaseModel):
ROLES = [
('ADMIN', 'Admin'),
('TEACHER', 'Teacher')
]
auth_user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
school_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
school_id = models.PositiveIntegerField()
school = GenericForeignKey('school_content_type', 'school_id')
role = models.CharField(null=True, blank=True, choices=ROLES, max_length=20)
class Places(BaseModel):
name = models.CharField(max_length=50)
code = models.CharField(max_length=12, unique=True)
class Department(BaseModel):
TYPES = [
('ONLINE', 'Online'),
('OFFLINE', 'OfFline')
]
department_type = models.CharField(max_length=15, choices=TYPES)
service_no = models.CharField(max_length=50)
instructions = models.TextField(null=True, blank=True)
place = models.ForeignKey(Places, to_field='code', db_column='place_code', on_delete=models.PROTECT)
СЕРИАЛИЗАТОРЫ
class DepartmentCreateSerializer(serializers.ModelSerializer):
place_code=serializers.CharField(read_only=True)
class Meta:
model=Department
fields = ('department_type','service_no','instructions')
def get_place(self, request):
user_id=self.context['request'].user.id
school_id=Staff.objects.get(auth_user_id= user_id).school_id
places_code_name=Places.objects.get(id= school_id).name