Erstes Posten, ein bisschen ein komisches Problem mit Djangos Admin TabularInline habend. Bei Suchanfragen scheint das Problem nicht zu bestehen.Django Admin Inline, die leere Extrainstanzen zurückgibt
Wenn ich einen Mehrwert - in diesem Fall eine Finanz Quote - und den Eintrag speichern, wird die Seite aktualisieren Sie die Instanz und weitere 2 Einträge hinzugefügt, die in jedem Feld leer Werte haben.
Das gleiche passiert, wenn ich sich zum Löschen aus der Admin-Seite markieren. Es löscht alle Einträge und fügt dann 3 weitere anstelle der vorherigen hinzu.
Das gleiche geschieht mit dem Rechnungsmodell (das ein ähnliches Modell ist), aber nicht mit den Kauf-Modellen, die wie erwartet verhalten. Das bringt mich dazu zu denken, dass ich etwas seltsam gemacht habe, als ich die Modelle geschrieben habe.
Bild im Anhang, um das Ergebnis zu zeigen.
Hoffentlich jemand kann sehen, wo ich
Dank falsch gegangen sind!
models.py
class Quote(models.Model):
job = models.ForeignKey(Job, related_name="quotes", on_delete=models.CASCADE)
number = models.AutoField(primary_key=True)
currency = models.ForeignKey(Currency, blank=True, null=True)
amount = models.DecimalField(max_digits=20, decimal_places=2, default="0.00", verbose_name="Amount Invoiced")
created = models.DateTimeField(auto_now=False, auto_now_add=True)
created_by = models.ForeignKey(Profile, related_name='quoted', blank=True, null=True, on_delete=models.SET_NULL)
sent = models.BooleanField(default=False)
superceded = models.BooleanField(default=False)
tax = models.DecimalField(max_digits=20,decimal_places=2,default=20.00, verbose_name="Tax Rate")
def __unicode__(self):
return self.created.strftime("%B %d, %Y") + " | " + u'%s' % (self.currency) + str(self.amount)
def readable_date(self):
return self.created.strftime("%B %d, %Y")
class Invoice(models.Model):
job = models.ForeignKey(Job, related_name="invoices", blank=True, null=True, on_delete=models.SET_NULL)
number = models.AutoField(primary_key=True)
currency = models.ForeignKey(Currency, blank=True, null=True)
amount = models.DecimalField(max_digits=20, decimal_places=2, default="0.00", verbose_name="Amount Invoiced")
created = models.DateTimeField(auto_now=False, auto_now_add=True)
created_by = models.ForeignKey('profiles.Profile', related_name='invoiced', blank=True, null=True, on_delete=models.SET_NULL)
paid = models.BooleanField(default=False)
sent = models.BooleanField(default=False)
superceded = models.BooleanField(default=False)
tax = models.DecimalField(max_digits=20,decimal_places=2,default=20.00, verbose_name="Tax Rate")
def __unicode__(self):
return self.created.strftime("%B %d, %Y") + " | " + u'%s' % (self.currency) + str(self.amount)
def readable_date(self):
return self.created.strftime("%B %d, %Y")
def get_day(self):
return self.created.strftime("%d")
def get_month(self):
return self.created.strftime("%b")
admin.py
from finance.models import Purchase, Quote, Invoice
from django.contrib import admin
from .models import Job
class QuoteInline(admin.TabularInline):
model = Quote
class InvoiceInline(admin.TabularInline):
model = Invoice
class PurchaseInline(admin.TabularInline):
model = Purchase
class JobModelAdmin(admin.ModelAdmin):
list_display = [
'job_number',
'brand',
'job_name',
'client',
'account_manager',
'last_updated_by',
'updated',
'status',
]
list_display_links = ['job_name']
list_filter = ['client']
inlines = [
QuoteInline,
PurchaseInline,
InvoiceInline
]
Example of issue in admin page
Das hat funktioniert, danke! Obwohl ich am Ende die Standardwerte änderte, so dass mindestens eines der Felder erforderlich war (was wahrscheinlich eine weniger hacky Lösung ist) –