2015-02-14 37 views

risposta

18

È possibile creare un modello senza una chiave di incremento automatico, ma non in grado di creare uno senza una chiave primaria.

Dal Django Documentation:

Se Django vede che hai impostato in modo esplicito Field.primary_key, non si aggiungerà la colonna automatica id.

Ogni modello richiede esattamente un campo per avere primary_key=True (dichiarato esplicitamente o aggiunto automaticamente).

6

No, non è possibile. Estratto da documentation:

Ogni modello richiede esattamente un campo per avere primary_key = True (dichiarato esplicitamente o aggiunto automaticamente).

4

Ho trovato la soluzione.

Poiché django ha bisogno della chiave primaria (sia l'ID composito che l'ID di un singolo campo), ho provato a impostare primary_key = True in ogni campo nella sua combinazione di tasti compositi e aggiungere quei campi in Meta e gruppi in unique_together

class ReportPvUv(models.Model): 
    report_id = models.ForeignKey(Reports, primary_key=True) 
    rdate = models.DateField(primary_key=True) 
    fdate = models.DateTimeField(primary_key=True) 
    ga_pv = models.BigIntegerField() 
    ga_uv = models.BigIntegerField() 
    ur_pv = models.BigIntegerField() 
    ur_uv = models.BigIntegerField() 
    da_pv = models.BigIntegerField() 
    da_uv = models.BigIntegerField() 

    class Meta: 
     db_table = 'report_pv_uv' 
     unique_together = ('report_id', 'rdate', 'fdate') 

e quando corro makemigrations, non ci sono campo ID in esso script migrazioni: D

ringrazia tutti

+0

Oh no !!. Non è possibile impostare più chiavi primarie. È necessario impostarlo come 'unique = True' e avere solo una chiave primaria – karthikr

+1

Le chiavi primarie a più colonne ** sono ** supportate da Django. Ci sono molti problemi con questo approccio. Vedi https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys – Selcuk

+0

ok, va bene. Ho cambiato in unique = True – HQM

Problemi correlati