Use o OneToOneField inline no Django Admin
eu tenhoDataFile modelos que têmLogOutput objetos. UMADataFile objeto terá um únicoLogOutput. Para qualquerLogOutput que pertence a umDataFile, ele pertencerá apenas a um únicoDataFile. Outros modelos também têmLogOutput objetos.
Como eles são individuais, exceto queLogOutputs pode pertencer a outras coisas que nãoArquivos de dados (por exemplo.Suítes eu também acho que eles têm - veja o código abaixo) Eu pensei que a coisa certa a fazer seria ter um OneToOneField definido emDataFile esse é oLogOutput.
models.py:
class LogOutput(models.Model):
raw = models.TextField()
class DataFile(models.Model):
name = models.CharField()#etc.
logoutput = models.OneToOneField(LogOutput)
class Suite(models.Model):
# Many Suites will have the same datafile:
datafile = models.ForeignKey(DataFile)
# Each Suite has a unique LogOutput different from the DataFile's
# and as with the DataFile, that LogOutput will have just one Suite
logoutput = models.OneToOneField(LogOutput)
Agora, quando olho para um DataFile na visualização Admin, quero ver o LogOutput, então pensei em apenas incorporá-lo.
admin.py:
class LogOutputInline(admin.TabularInline):
model = LogOutput
class DataFileAdmin(admin.ModelAdmin):
search_fields = ['name']
inlines = [LogOutputInline]
admin.site.register(DataFile, DataFileAdmin)
Parece que, devido à direcionalidade de onde os OneToOneField (s) estão definidos, não posso fazer o inlining. O admin.py acima me fornece:
<class 'trial.models.LogOutput'> has no ForeignKey to <class 'trial.models.DataFile'>
O que, é claro, é verdade, mas não vejo como é relevante, porque umDataFile tem um (e apenas um)LogOutput que, por sua vez, pertence apenas a esteDataFile.
Eu liPergunta 1744203 mas a solução era inverter a direção do relacionamento. Eu não acho que posso fazer isso porque outros objetos (Suítes) também têmLogOutputs.
E, se importa, isso está no Django 1.5.
Minha pergunta é: O que preciso fazer para exibir o inlineLogOutput noArquivos de dados página de administração? (Ou o meu pensamento sobre o uso de um OneToOneField precisa de revisão?)
TIA!