2
I’m looking to build a custom model field that behaves like Foreignkey, only with a few additional details.
This custom field will automatically register a document, passing as reference the model name. Therefore, if I am registering a person, a document will be generated for them, and in this document the model name will be registered, in the case Person.
Example:
# esse model 'documento' seria utilizado como referencia para qualquer outro model
class Documento(models.Model):
    modelo = models.CharField(max_length=100)
class CustomDocForeignKey(models.ForeignKey):
    pass
    # relacionado a Documento
    # if este campo estiver vazio então crie um documento:
    #    nome_da_class_origem = ? # ex: Pessoa, Carro, ...
    #    doc = Documento.objects.create(modelo=nome_da_class_origem)
    #    return doc
class Pessoa(models.Model):
    documento = CustomDocForeignKey()
class Carro(models.Model):
    documento = CustomDocForeignKey()
class Animal(models.Model):
    documento = CustomDocForeignKey()
With this custom model field would be automatically generated a document for this person or car or animal, if you do not have any documents. In addition, the model’s name is passed __class__.__name__ to be stored in the field modelo class Documento.
PS: the idea is that this field be filled in when calling the save() method, as well as the auto_now_add=True country DateField.
In this case you wouldn’t need to inherit from Foreignkey, just use a field in the templates that are Foreignkey for the document. document = models.Foreignkey(Customdoc) 1. Uses mixin not to repeat itself.. inside the mixin init of it passes a class to be recorded.
– Marlysson