Доброго времени суток!
Есть модель:
class Itinerary(models.Model):
class Meta:
db_table = 'logistics_app_itinerary'
# unique_together = (("user", "date"),)
verbose_name = u'Маршрутный лист'
verbose_name_plural = u'Маршрутные листы'
ordering = ['-id']
id = models.AutoField(u'№', primary_key=True)
date = models.DateField(u'Дата', default=date.today)
cargoes = models.ManyToManyField(Cargo, verbose_name=u'Грузы')
И класс администрирования:
class ItineraryAdmin(admin.ModelAdmin):
list_display = ('date', 'cargoes_def', 'load_def', 'vehicle_def')
filter_horizontal = ['cargoes']
date_hierarchy = 'date'
def save_model(self, request, obj, form, change):
obj.save()
recipients = set()
subject = 'Измененен маршрутный лист на %s (%s)' % (obj.date.strftime('%d.%m.%Y'), obj.vehicle)
message = 'Транспортное средство:\t%s\nВодитель:\t\t\t%s\n\n' % (obj.vehicle, obj.driver)
for cargo in obj.cargoes.all():
message += 'Дата\t\t\t\t%s\nМесто погрузки\t\t%s\nПолучатель:\t\t\t%s\nВес:\t\t\t\t%d\nЗаказы:\t\t\t%s\n' \
'Коментарий\t\t\t%s\nЗапись\t\t\t\t%s\n\n' %\
(cargo.date.strftime('%d.%m.%Y'), cargo.load_place.title, cargo.recipient, cargo.weight,
cargo.orders, cargo.comment, cargo.record.strftime('%H:%M %d.%m.%Y') if cargo.record else '')
recipients.add(cargo.creator.email)
recipients.add(cargo.load_place.email)
send_mail(subject, message, 'Логистика <logist2@tkb.com.ua>', list(recipients))
def formfield_for_manytomany(self, db_field, request, **kwargs):
print(db_field.name)
return super(ItineraryAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
Можно ли указать Django, чтобы давала выбрать только те объекты Cargo
, которые еще не привязаны ни к одному объекту Itinerary
т.е. не участвуют в ManyToMany
связи, или нужно самому находить их в методе formfield_for_manytomany
?
Корректно ли отправлять почту в методе save_model
?
Updated 23 Dec. 2015, 16:11 by SES.