Как я могу отправить данные в два разных столбца из одного и того же поля формы?

В моем проекте я использую Django 1.11.10 и postgresql для базы данных. Когда кто-то вводит данные в поле «order_id», я хочу отправить ему столбец item_barcode, независимо от того, являются ли его первые 2 символа буквами. Как я могу это сделать?

модели.py

from django.db import models


class Customer(models.Model):


    item_barcode = models.TextField(max_length=50,unique=True,null=True)
    order_id = models.TextField(max_length=50,unique=True,null=True)
    full_name = models.TextField(max_length=50)
    company = models.TextField(max_length=60,blank=True)
    email = models.EmailField(max_length=40)
    phone_number = models.TextField(max_length=17)
    note = models.TextField(max_length=256,blank=True)


    def __str__(self):
        return self.order_id

формы.py

class CustomerForm(forms.ModelForm):

    class Meta:
        model = Customer
        fields = (
        'order_id','full_name','company','email',
        'phone_number','note')

просмотры.py

def guaform(request):

    form = CustomerForm()

    if request.method == "POST":
        form = CustomerForm(request.POST)

        if form.is_valid():
            form.save(commit=True)
        
        else:

            HttpResponse("Error from invalid")

    return render(request,'customer_form.html',{'form':form})

* Столбцы моей базы данных такие же, как и в models.py

Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете выполнить некоторую работу после проверки формы.

if form.is_valid():
    #test to see if first two characters are letters
    first_two_characters = form.cleaned_data['order_id'][0:2]
    if first_two_characters.isAlpha():
        #get an instance of the object without saving to db
        form_uncommitted = form.save(commit=False)
        #set the item_barcode field and only then save to db
        form.uncommitted.item_barcode = form.cleaned_data['order_id'] #or what you want it to be
        form_uncommitted.order_id = None
        form_uncommitted.save
    else:
        #it's not a barcode so we can just save
        form.save()
    

Таким образом, он также сохраняет order_id. Могу ли я сделать это без сохранения в order_id?

Ahmet Yılmaz 17.05.2022 04:08

Конечно, вы можете просто указать form_uncommitted.order_id = None. Я обновил ответ.

SamSparx 17.05.2022 04:28

Другие вопросы по теме