Джанго автоинкрементное поле - PullRequest
0 голосов
/ 17 декабря 2018

Я пытался сделать автоинкремент для определенного поля и не знаю, как это сделать.Я использую postgres для администрирования моей базы данных: я пробовал тип данных Autofield, но он не работал.Я предполагаю, что django использует поле идентификатора по умолчанию, и я хотел бы заменить его своим полем WO_ID.

models.py

class Workorder(models.Model): 
    WO_ID = models.BigIntegerField(blank=True, primary_key=True)
    WO_DateDefWO = models.DateField(default=datetime.now)
    WO_DateSched = models.DateField(blank=True, null=True)
    WO_DateFinished = models.DateField(blank=True, null=True)
    WO_ST_ID_Sign = models.BigIntegerField(blank=True, null=True)
    WO_Status_ID = models.BigIntegerField(blank=True, null=True, default=1, choices=STATUS_CHOICES)
    WO_Type_ID = models.BigIntegerField(blank=True, null=True, default=1, choices=TYPE_CHOICES)
    WO_Comments = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_ID = models.BigIntegerField(blank=True, null=True)
    WO_Nav_Kons_ID = models.CharField(max_length=12, blank=True, null=True)
    WO_Nav_Name = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_CustAdr = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_Debt = models.FloatField(blank=True, null=True)
    WO_Nav_PropCode = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_DepCode = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_PhoneNo = models.CharField(max_length=254, blank=True, null=True)
    WO_Nav_ReasonCompl = models.CharField(max_length=254, blank=True, null=True)
    WO_NightShift = models.BooleanField(default=False)
    WO_Priority = models.BigIntegerField(blank=True, null=True)
    WO_RE_ID = models.BigIntegerField(blank=True, null=True)
    WO_MapUrl = models.CharField(max_length=254, blank=True, null=True)

    def __unicode__(self):
        return self.WO_ID

views.py

from django.shortcuts import render, get_object_or_404, redirect
from django import forms
from django.views.generic import TemplateView
from django.core.serializers import serialize
from django.http import HttpResponse
from MMS.models import Workorder
from MMS import forms
from MMS.forms import CreateWorkorder
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from . import forms


def workorders_list(request):
    workorders_all = Workorder.objects.all().values_list('WO_ID', flat=True)
    return render(request, "workorders_list.html")

def home_page(request):
    return render(request, "home_page.html")

def workorder_create(request):
    if request.method == "POST":
        form = CreateWorkorder(request.POST)
        if form.is_valid():
            CreateWorkorder_item = form.save(commit=False)
            CreateWorkorder_item.save()
            return redirect('/workorder/' + str(CreateWorkorder_item.WO_ID) + '/')
    else:
        form = CreateWorkorder()
    return render(request, 'workorders/workorder_create.html', {'form': form})


def workorder_edit(request, id=None):
    item = get_object_or_404(Workorder, WO_ID=id)
    form = CreateWorkorder(request.POST or None, instance=item)
    if form.is_valid():
        form.save()
        return redirect('/workorder/' + str(item.WO_ID) + '/')
    return render(request, 'workorders/workorder_edit.html', {'form': form})


def workorder(request, id):
    workorder = Workorder.objects.get(WO_ID=id)
    return render(request, 'workorders/workorder.html', {'workorder': workorder})

Код автоинкремента postgresql:

CREATE SEQUENCE public.MMS_workorder_id_seq
    INCREMENT 1
    START 1
alter table MMS_workorder ALTER COLUMN "WO_ID" SET DEFAULT nextval('MMS_workorder_id_seq');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...