Как подклассифицировать поле внешнего ключа модели Django
Новичок в Python и Django, но я хотел бы создать пользовательское поле внешнего ключа, содержащее различные предустановки для использования в моем приложении. Я пробовал несколько подходов, но у меня возникают различные ошибки, и я не уверен, куда двигаться дальше.
Goal - это класс модели 'BaseFKField', который имеет:
on_delete = models.RESTRICTпо умолчаниюblank = Falseпо умолчанию- связанные имена не имеют типичного суффикса '_set' для запросов,
related_nameэто вызывает трудности
Я пробовал различные формулировки этого:
class BaseFKField(models.ForeignKey):
def __init__(self, to, on_delete = None, ok_blank = None, *args, **kwargs):
on_delete = models.RESTRICT
kwargs['blank'] = ok_blank
super().__init__(to, on_delete, blank = ok_blank, *args, **kwargs)
class BaseFKField(models.ForeignKey):
def __init__(self, to, on_delete=None, *args, **kwargs):
super().__init__(to, on_delete, blank = False, *args, **kwargs)
Также пробовал установить kwargs["rel"] в моем ___init___, импортируя ManyToOneRel и используя его, как они делают с rel_class в классе поля Foreign Key, но безуспешно.
Ошибки, которые я получаю:
- ошибка обратного аксессора для
related_name - переменная задана дважды
- пропущен необходимый аргумент
В целом, мне очень трудно создавать пользовательские поля. Я обнаружил, что документации трудно следовать (пример там очень простой). Я получаю множество ошибок, особенно связанных с попыткой предварительного заполнения обязательных полей, поэтому любые советы будут оценены по достоинству.
Если кто-нибудь может привести пример пользовательского класса, который устанавливает необходимый аргумент, это было бы замечательно.
Иначе я просто вернусь к тому, чтобы делать это с помощью функций.