У меня есть компания, отдел и список товаров. В списке товаров компании и отдела находятся внешние ключи. поэтому, когда я добавляю элемент в список элементов, элемент автоматически генерирует для себя код, например, из 3 алфавитов названия компании, 3 алфавитов названия отдела и 4 или 5 цифр номера. начиная с 0001 и с автоинкрементом. каждая позиция компании будет начинаться с 0001. Например: если для компании задано «ABCDE», а для отдела - «Финансы», код будет сгенерирован автоматически, как AB C -Fin-0001. Есть ли способ сделать это?
Model_Class
class Item(models.Model):
item_name = models.CharField(max_length=255, blank =True)
item_choice = (
('IT','IT'),
('Electronics', 'Electronics'),
)
item_type = models.CharField(max_length=255, blank =True, choices = item_choice )
code = models.CharField(unique=True, max_length=255)
company = models.ForeignKey(Company, on_delete = models.SET_NULL, null =True,blank=True)
department = models.ForeignKey(Department, on_delete = models.SET_NULL,null= True, blank=True)
My_view
def item_entry(request):
title = 'Add Item'
form = ItemForm(request.POST or None)
if form.is_valid():
form.save()
messages.success(request, 'Successfully Saved')
return redirect('/item_list')
context = {
"title": title, "form":form
}
return render(request,'item_entry.html', context)
Form_View
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ("item_name","item_type", "code","company","department",)
Template_view
<table>
<tr>
<th>#</th>
<th>Item Name</th>
<th>Item Type</th>
<th>Code</th>
<th>Company</th>
<th>Department</th>
</tr>
{% for instance in queryset %}
<tr>
<td>{{forloop.counter}}</td>
<td><a href="{% url 'item_edit' pk=instance.pk %}"> {{instance.item_name}}</a></td>
<td>{{instance.item_type}}</td>
<td>{{instance.code}}</td>
<td>{{instance.company}}</td>
<td> {{instance.department}}</td>
</tr>
{% endfor %}
</table>