Я новичок в django, и в качестве обучающего приложения я создаю журнал расходов применение.
В моих моделях у меня есть три класса, которые выглядят следующим образом (Я немного упростил их для краткости):
class AbstractExpense(models.Model):
description = models.CharField(max_length=100)
amount = models.IntegerField()
category = models.ForeignKey('Category')
tags = models.ManyToManyField('Tag')
insert_date = models.DateTimeField(auto_now=True)
class Meta(object):
abstract = True
class Expense(AbstractExpense):
date = models.DateField('Date')
class RecurringExpense(AbstractExpense):
FREQUENCY_CHOICES = (('D', 'daily'),
('W', 'weekly'),
('M', 'monthly'),
('Y', 'yearly'))
start_date = models.DateField(blank=False)
end_date = models.DateField(blank=True, null=True)
last_check = models.DateField(blank=True, null=True)
frequency = models.CharField(blank=False, max_length=1, choices=FREQUENCY_CHOICES)
RecurringExpense
это просто шаблон:когда система понимает, что время для вставки повторяющихся расходов (например. :Аренда)должна взять информацию из шаблона и скопировать ее в новый экземпляр класса Expense
. Вот соответствующий бит из метода RecurringExpense
, отвечающего за работу:
Expense(description=self.description,
amount=self.amount,
category=self.category,
# tags=self.tags,
date=expense_date).save()
Вышеприведенное работает безупречно, но если я раскомментирую строку tags=self.tags
, django жалуется и выдает следующую ошибку:
Exception Type: TypeError
Exception Value: 'tags' is an invalid keyword argument for this function
Exception Location: /django/db/models/base.py in __init__, line 367
Я знаю Я мог бы создайте цикл , чтобы обойти эту проблему, но мне интересно, есть ли более элегантный способ, который позволил бы мне выполнить то же самое сразу....