Вопрос по – Автоматическое увеличение значения в Django относительно предыдущего

6

Error: User Rate Limit Exceeded

Ваш Ответ

3   ответа
0

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

В настоящее время в Django разрешено только одно автополе для каждой модели, и оно используется для основного поля.
Я посмотрю, смогу ли я это сделать ... Я подумал, что есть более простой способ, например, получить значение предыдущей записи для этого поля, а затем добавить 1 к нему. В любом случае, спасибо
0

Error: User Rate Limit Exceeded

+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| code  | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
+-------+------------------+------+-----+---------+----------------+

Error: User Rate Limit Exceeded

self.code = None
self.number = top.number + 1
self.save() # or super(Product, self).save()

Error: User Rate Limit ExceededcodeError: User Rate Limit Exceeded

8

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

class Product(models.Model): 
   code = models.IntegerField()
   number = models.IntegerField()
   ...

   def get_serial_number(self): 
      "Get formatted value of serial number"
      return "%.2d-%.3d" % (self.code, self.product)

   def save(self): 
      "Get last value of Code and Number from database, and increment before save"
      top = Product.objects.order_by('-code','-number')[0]
      self.code = top.code + 1
      self.number = top.number + 1
      super(Product, self).save()

   # etc.

Error: User Rate Limit Exceeded

исправить проблемы параллелизма, которые вы можете использоватьtop = Product.objects.select_for_update(nowait=True).order_by('-code','-number')[0]
Да использоватьselect_for_update(), но сначала убедитесь, что ваша СУБД поддерживает блокировку строк! (недавние MySQL и Postgres делают).

Похожие вопросы