KipronoKirui
KipronoKirui

Reputation: 31

How to get username field automatically in Django

I am working on a Django project which is something similar to Fiverr in its working. I have used abstractuser where there is a buyer and seller. The seller creates a gig then the buyer will go through the gig before placing an order. My issue is how to get the seller and place him in the order that the buyer will create from reading the gig. Currently I am using the system whereby the buyer will have to manually choose a gig from a list, which I think is not effective. Here is my Models.py

`class User(AbstractUser):
            is_buyer=models.BooleanField(default=False)
            is_seller=models.BooleanField(default=False)
        class Profile(models.Model):
            user = models.OneToOneField(User, on_delete=models.CASCADE)
            avatar = models.ImageField(default='avatar.jpg', null=True, blank=True)
            about = models.CharField(max_length=100)
        
            def __str__(self):
                return self.user.username
        
        class Gig(models.Model):
            seller = models.ForeignKey(Profile, on_delete = models.CASCADE, null=False, blank=False)
            category = models.ForeignKey('Category', on_delete = models.CASCADE, null=False, blank=False)
            title = models.CharField(max_length=500, null=True, blank=True)
            description = models.CharField(max_length=500, null=True, blank=True)
            gig_id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True, editable=False)
            created = models.DateTimeField(auto_now_add=True)
        
            def __str__(self):
                return self.title 
        
        class Order(models.Model):
            buyer = models.ForeignKey(Profile, on_delete=models.CASCADE, null=False, blank=False)
            seller = models.ForeignKey(Gig, on_delete=models.CASCADE, related_name='+', null=False, blank=False)
            title = models.CharField(max_length=500, null=True, blank=True)
            description = models.CharField(max_length=500)
            amount = models.IntegerField(max_length=50, blank=False)
            is_ordered = models.BooleanField(default=False)
            order_id = models.UUIDField(default=uuid.uuid4, unique=True, db_index=True, editable=False)
            slug = models.SlugField(null=True)
        
            def __str__(self):
                return self.title` 

And views.py where I am getting the submissions;

def createOrder(request):
    profile = request.user.profile 
    form = CreateOrderForm()
    if request.method == 'POST':
        form = CreateOrderForm(request.POST, request.FILES)
        if form.is_valid:
            order = form.save(commit=False)
            order.buyer = profile 
            order.save() 
            # form.save()
            messages.info(request, 'Order Succesfully Created')
            return redirect('create_order')
        else:
            messages.error(request, 'Order Not Created! Try Again Later')
             
    context = {'form':form}
    return render(request, 'users/create_order.html', context)

Any help will he highly appreciated.

Upvotes: 0

Views: 53

Answers (0)

Related Questions