Una delle cose che mi infastidisce sulle apparecchiature Django è che devi specificare la chiave primaria di ogni modello. C'è un modo per creare proiettori senza dover specificare una chiave primaria per ogni riga?Django: crea proiettori senza specificare una chiave primaria?
risposta
Usa "pk: null" invece di "pk: 1" (o qualsiasi altra cosa), che si tradurrà in PK essere impostato su Nessuno, e quando il oggetto è salvato verrà assegnata una chiave primaria.
Questo funziona almeno per YAML, suppongo che lo stiate usando se si sta creando a mano.
Devi stare attento quando usi dispositivo pk-less. Quando si richiama loaddata, proverà ad aggiungere nuove voci invece di sovrascrivere quelle esistenti. – Danosaure
spookylukey o @Danosaure Esiste un modo per generare fixture "pk: null" usando manage.py dumpdata? Sto consolidando due DB con schemi identici e sto lavorando su come farlo con dumpdata/loaddata –
@BenRoberts Il problema con pk: null è che potresti finire con i duplicati. Di solito, semplicemente dumpdata e vi il file per fare questo genere di cose. – Danosaure
Un mio amico ha suggerito modulo fixture
: http://farmdev.com/projects/fixture/
Sembra uno stack equo del codice boilerplate con cui lavorare. Il mio flusso di lavoro per generare dati da testare è spesso quello di utilizzare l'interfaccia di amministrazione per creare dati, quindi utilizzare la makefixture di django-test-utils per scaricarlo in un file e quindi (se necessario) annullare qualsiasi voci pk –
si dovrebbe avere uno sguardo alle chiavi naturale se stai hanno voglia aggiungere relazione senza l'utilizzo di pk
https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model
Purtroppo, il i documenti sulle chiavi naturali non menzionano il trucco pk = null usato in precedenza.È necessario che entrambi i pk = null e le chiavi naturali abbiano un dispositivo completamente privo di memoria – Cerin
Sfortunatamente quel collegamento non funziona più.Ecco quello che funziona oggi, vediamo se dura più di 3 anni: https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-app-label-app-label-app-label-model –
ho avuto a che fare con lo schema DB esistente senza possibilità di cambiare, quindi ho bisogno di un tabella con chiave primaria complessa o senza affatto - ma non con quella seriale. Quello che ho fatto:
ho specificato un primary_key = True al campo, che non dovrebbe essere unico metodo a tutti e ha scritto sovraccarico:
class ContraIndicationsMedicines(models.Model):
contra_indication = models.ForeignKey(ContraIndication, primary_key=True)
medicine = models.ForeignKey(Medicine)
def validate_unique(self, exclude=None):
pass
In effetti, ha funzionato per le mie esigenze, ma ci sono più chiamate di convalida all'interno di django.contib.admin. * e non tutte le inline ecc sono garantite per funzionare. Questa era l'unica soluzione che potevo implementare ... ((
Se si controlla il comando dumpdata manage.py, verranno visualizzate alcune opzioni chiamate --natural-foreign, --natural-primary. all'uscita puoi vedere che gli oggetti vengono scaricati senza usare chiavi primarie o chiavi esterne
- 1. Crea tabella join senza chiave primaria
- 2. Crea vista con chiave primaria?
- 3. Chiave primaria composita in django
- 4. Sospensione senza chiave primaria
- 5. Django: Interrogazione di sola lettura vedere senza chiave primaria
- 6. Elimina duplicati senza chiave primaria
- 7. Migrazione delle rotaie Crea tabella Chiave primaria
- 8. Crea identità SQL come chiave primaria?
- 9. JPA entità per una tabella senza chiave primaria
- 10. Cassandra CLI: specificare il nome della chiave primaria
- 11. Crea una tabella con la chiave primaria utilizzando jOOQ
- 12. Come posso recuperare tutti gli articoli da una tabella DynamoDB senza specificare la chiave primaria?
- 13. Chiave primaria contro chiave
- 14. Compound/Composite chiave primaria/unica con Django
- 15. SQLAlchemy Automap non crea una classe per le tabelle senza chiave primaria
- 16. Creazione di oggetti django con una chiave primaria casuale
- 17. Campo di incremento automatico di Django BigInteger come chiave primaria?
- 18. Mappatura tabella Fluent-NHibernate senza chiave primaria
- 19. tabella mysqldump senza scaricare la chiave primaria
- 20. Inserisci dove non esiste, senza chiave primaria
- 21. Modello Django Incremento automatico Chiave primaria basata su chiave esterna
- 22. SQL Server incrementa automaticamente una colonna senza chiave primaria
- 23. Come definire una tabella senza chiave primaria con SQLAlchemy?
- 24. Specifica di una chiave primaria su @ElementCollection
- 25. modello utente django e campo chiave primaria personalizzato
- 26. Imposta la colonna come chiave primaria se la tabella non ha una chiave primaria
- 27. Una chiave esterna può agire come una chiave primaria?
- 28. Esclusione della chiave primaria in Django dumpdata con chiavi naturali
- 29. Implementazione UUID come chiave primaria
- 30. Accesso Chiave primaria da URL in Django Visualizzazione classi
stai usando manage.py --dumpdata o scrivendoli a mano? –
Scrivendoli a mano –