Code: Alles auswählen
#models.py
class TopMenuArticle(models.Model):
TYPE = models.CharField("Typ", max_length=1, choices=(('P', 'Promotion'), ('E', 'Event'), ('S','Sales & Marketing')))
pos_CHOICES = ((1,'01'),(2,'02'),(3,'03'),(4,'04'),(5,'05'),(6,'06'),(7,'07'),(8,'08'),(9,'09'),(10,'10'),(11,'11'),(12,'12'))
position = models.SmallIntegerField(choices=pos_CHOICES)
# ... other fields
class Meta:
unique_together = ("TYPE", "position")
Um des zu verbessern würde ich gerne eine Tabelle hinzufügen, in der angegeben ist, welche Positionen Belegt und welche Frei sind.
Dazu habe ich die Felder TYPE und position in einem Fieldset zusammengefasst und eine description angegeben die ich nach den vorhandenen Instanzen generiere:
Code: Alles auswählen
#admin.py
class TopMenuArticleAdmin(admin.ModelAdmin):
free = 'style="background-color:#afa;"'
used = 'style="background-color:#faa;"'
styles = {'P01':free,'P02':free,'P03':free,'P04':free,'P05':free,'P06':free,
'P07':free,'P08':free,'P09':free,'P10':free,'P11':free,'P12':free,
'E01':free,'E02':free,'E03':free,'E04':free,'E05':free,'E06':free,
'E07':free,'E08':free,'E09':free,'E10':free,'E11':free,'E12':free,
'S01':free,'S02':free,'S03':free,'S04':free,'S05':free,'S06':free,
'S07':free,'S08':free,'S09':free,'S10':free,'S11':free,'S12':free,}
for entry in TopMenuArticle.objects.all():
styles['%s%02i'%(entry.TYPE,entry.position)] = used
html= """<table>
<tr><td colspan="4" style="text-align:right;">Frei: </td><td style="background-color:#afa;"></td>
<td colspan="4" style="text-align:right;">Belegt: </td><td style="background-color:#faa;"></td>
<td colspan="3"></td></tr>
<tr><td>Promotion</td>
<td %(P01)s>1</td><td %(P02)s>2</td><td %(P03)s>3</td><td %(P04)s>4</td>
<td %(P05)s>5</td><td %(P06)s>6</td><td %(P07)s>7</td><td %(P08)s>8</td>
<td %(P09)s>9</td><td %(P10)s>10</td><td %(P11)s>11</td><td %(P12)s>12</td></tr>
<tr><td>Event</td>
<td %(E01)s>1</td><td %(E02)s>2</td><td %(E03)s>3</td><td %(E04)s>4</td>
<td %(E05)s>5</td><td %(E06)s>6</td><td %(E07)s>7</td><td %(E08)s>8</td>
<td %(E09)s>9</td><td %(E10)s>10</td><td %(E11)s>11</td><td %(E12)s>12</td></tr>
<tr><td>Sales & Marketing</td>
<td %(S01)s>1</td><td %(S02)s>2</td><td %(S03)s>3</td><td %(S04)s>4</td>
<td %(S05)s>5</td><td %(S06)s>6</td><td %(S07)s>7</td><td %(S08)s>8</td>
<td %(S09)s>9</td><td %(S10)s>10</td><td %(S11)s>11</td><td %(S12)s>12</td></tr>
</table>"""%styles
fieldsets = (
('Position', {
'description': html,
'fields': ('TYPE', 'position')
}),
(None, {
'fields': ('title', 'text', 'image', 'public')
}),
)
Hat jemand eine Idee wie ich einen Reload der Tabelle erzwingen kann??
Vielleicht hat auch jemand eine bessere Idee die fehlende Info in den Admin Bereich einzubauen.
tjuxx